﻿<%@ WebHandler Language="C#" Class="compareHouse" %>

using System;
using System.Web;
using System.Text;
using System.Collections.Generic;
using System.Web.Script.Serialization;
using Chenxin.Lib.Utility;

public class compareHouse : AjaxHandlerBase
{

    //2010-6-17 wang.wei-add
    public compareHouse()
    {
        htTypePermit.Add("add", Constants.Permit_CompareHouseAdd);
    }
    
    //*******************************************
    //功能概要       ：重写的请求处理方法
    //参数説明       ：context 请求的上下文
    //返回值説明     ：无
    //功能詳細       ：父类中隐藏了IHttpHandler接口方法，本类中须对本方法进行重写
    //作成者         ：姚志强
    //作成日         ：2010-03-04 
    //修改者         ：王玮
    //修改日         ：2010-03-25
    //*******************************************
    override public void RequestProcess(HttpContext context)
    {
        context.Response.AddHeader("pragma", "no-cache");
        context.Response.AddHeader("cache-control", "");
        context.Response.CacheControl = "no-cache";
        
        string strOp = context.Request.Params["op"];
        string strResponse = "";
        switch (strOp.ToLower())
        {
            case "add":
               strResponse = AddCompareHouse(context);
                break;
            case "remove":
                strResponse =RemoveCompareHouse(context);
                break;
            default:
                break;
        }
        context.Response.Write(strResponse);
    }

    //*******************************************
    //功能概要       ：添加房源对比
    //参数説明       ：
    //返回值説明     ：
    //功能詳細       ：添加房源对比
    //作成者         ：姚志强
    //作成日         ：2010-03-03
    //修改者         ：hejifeng
    //修改日         ：2010-04-21
    //*******************************************
    private string AddCompareHouse(HttpContext context)
    {
         try
        {
            //转换成实体
            string strHouseId = context.Request.Params["houseid"];
            if (strHouseId == null)
            {
                return retExecResult(Constants.ExecResult.Error, "房源标识丢失，请联系管理员！", "");
            }

            Chenxin.Lib.House.Entity.House_BaseInfo clheh = Chenxin.Lib.House.DAL.House_BaseInfo.GetModel(new Guid(strHouseId));
            //要比較的房屋列表
            Dictionary<string, string> dicCompareHouse;
             
            //从Cache中获取要对比的房源ID
            Chenxin.Lib.Cache.CacheService cs = new Chenxin.Lib.Cache.CacheService(Chenxin.Lib.Cache.CacheConn.xCacheConn.HOUSE);
            //Cache要比较房屋的键值
            string strCacheKey = string.Format(Chenxin.Lib.Cache.CacheDataType.HOUSE_COMPAREHOUSES, CurrentUserInfo.UserId.ToString());
             //从Cache中查找
            dicCompareHouse = cs.GetObject(strCacheKey) as Dictionary<string,string>;

             //未命中
            if (!cs.Hit)
            {
                //如果Cache中没有信息,将当前的房源ID添加到Cache中
                dicCompareHouse = new Dictionary<string, string>();
                //当前房源ID添加到列表中
                dicCompareHouse.Add(strHouseId, strHouseId);
                //设定Cache中的存活期
                cs.Set(strCacheKey, dicCompareHouse);
                //添加用户操作日志 2010-5-11 王玮 Add
                AddLog("" + CurrentUserInfo.UserName + "添加了一个对比:[" + clheh.Community + clheh.BuildingName + clheh.Room + "]房源已添加房源对比。",
                        OperationType.OperationTypeComboList()["OprType_ContrastAdd"].ToString());
                return retExecResult(Constants.ExecResult.Succ, "添加成功！", "");
            }
            else
            {
                if (dicCompareHouse == null)
                {
                    dicCompareHouse = new Dictionary<string, string>();
                }
                //不在Cache列表中的场合
                if (!dicCompareHouse.ContainsKey(strHouseId))
                {
                    //添加到列表中
                    dicCompareHouse.Add(strHouseId, strHouseId);
                }
                //删除现有Cache中数据
                //cs.Delete(strCacheKey);
                //重新添加
                cs.Set(strCacheKey, dicCompareHouse);

                //添加用户操作日志 2010-5-11 王玮 Add
                AddLog("" + CurrentUserInfo.UserName + "添加了一个对比:[" + clheh.Community + clheh.BuildingName + clheh.Room + "]房源已添加房源对比。",
                        OperationType.OperationTypeComboList()["OprType_ContrastAdd"].ToString());
                
                return retExecResult(Constants.ExecResult.Succ, "添加成功！", "");
            }
        }
         catch (Exception ex)
         {
             return retExecResult(Constants.ExecResult.Succ, ex.Message, "");
         }
    }

    //*******************************************
    //功能概要       ：移除房源对比
    //参数説明       ：
    //返回值説明     ：
    //功能詳細       ：移除房源对比
    //作成者         ：姚志强
    //作成日         ：2010-03-03
    //修改者         ：hejifeng
    //修改日         ：2010-04-21
    //*******************************************
    private string RemoveCompareHouse(HttpContext context)
    {
        try
        {
            //转换成实体
            //转换成实体
            string strHouseId = context.Request.Params["houseid"];
            if (strHouseId == null)
            {
                return retExecResult(Constants.ExecResult.Error, "房源标识丢失，请联系管理员！", "");
            }

            Chenxin.Lib.House.Entity.House_BaseInfo clheh = Chenxin.Lib.House.DAL.House_BaseInfo.GetModel(new Guid(strHouseId));
            
            //要比較的房屋列表
            Dictionary<string, string> dicCompareHouse;
            
            //从Cache中获取要对比的房源ID
            Chenxin.Lib.Cache.CacheService cs = new Chenxin.Lib.Cache.CacheService(Chenxin.Lib.Cache.CacheConn.xCacheConn.HOUSE);

            //Cache要比较房屋的键值
            string strCacheKey = string.Format(Chenxin.Lib.Cache.CacheDataType.HOUSE_COMPAREHOUSES, CurrentUserInfo.UserId.ToString());
            //从Cache中查找
            dicCompareHouse = cs.GetObject(strCacheKey) as Dictionary<string, string>;

            if (cs.Hit)
            {
                //不存在
                if (!dicCompareHouse.ContainsKey(strHouseId))
                {
                    return retExecResult(Constants.ExecResult.Succ, "要移除的对比房源不存在！", "");
                }
                else
                {
                    //删除现有Cache中数据
                    //cs.Delete(strCacheKey);
                    //从数据字典中删除
                    dicCompareHouse.Remove(strHouseId);
                    //重新添加
                    cs.Set(strCacheKey, dicCompareHouse);
                    
                    
                    //添加用户操作日志 2010-5-11 王玮 Add
                    AddLog("" + CurrentUserInfo.UserName + "删除了一个对比:[" + clheh.Community + clheh.BuildingName + clheh.Room + "]房源已删除房源对比。",
                            OperationType.OperationTypeComboList()["OprType_ContrastDel"].ToString());
                    
                    return retExecResult(Constants.ExecResult.Succ, "已将该房源从对比房源中移除！", "");
                }
            }
            else
            {
                return retExecResult(Constants.ExecResult.Succ, "要移除的对比房源不存在！", "");
            }
            
         }
         catch (Exception ex)
         {
             return retExecResult(Constants.ExecResult.Succ, ex.Message, "");
         }
    }

}